package com.jy.adscm.operation.mask.service;

import com.jy.adscm.exception.AdscmSystemException;
import com.jy.adscm.operation.mask.bean.*;
import com.baomidou.mybatisplus.service.IService;
import com.jy.adscm.security.utils.Token;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 口罩生产工人工作记录表 服务类
 * </p>
 *
 * @author yyy
 * @since 2020-03-24
 */
public interface MaskWorkRecordService extends IService<MaskWorkRecord> {

    /**
     * 根据时间，查询工序统计报表
     * @param beginTime
     * @param endTime
     * @return
     */
    List<GxReportFormSupport> gxReportForm(String beginTime, String endTime)throws AdscmSystemException;

    /**
     * 工序统计甘特图
     * @param macId
     * @param beginTime
     * @param endTime
     * @return
     * @throws AdscmSystemException
     */
    GxReportGanttSupport gxReportGantt(Long macId, String beginTime, String endTime)throws AdscmSystemException;

    /**
     * 修改工序记录
     * @param maskWorkRecord
     * @param token
     * @return
     */
    Boolean updateMaskWorkRecord(MaskWorkRecord maskWorkRecord, Token token);

    /**
     * 根据id删除id
     * @param id
     * @param token
     * @return
     */
    Boolean deleteMaskWorkRecord(Long id, Token token);

    /**
     * 工序统计柱形图，按照某一年的季度/月统计
     * @param year 年
     * @param type 1：按照季度统计、2：按照月统计
     * @return
     */
    List<GxReportBarChartsSupport> gxReportBarCharts(Integer year, Integer type);

    /**
     * 工序统计柱形图，按照周统计（如果type == 1 ，则看 year年target月所在的这几周的统计报表，否则就是year年target季度所在的这几周的统计报表）
     * @param year 年
     * @param type 1：季度，2：月
     * @param target 具体数值
     * @return
     * @throws AdscmSystemException
     */
    Map<String ,Object> gxReportBarChartsByWeek(Integer year, Integer type, Integer target);

    /**
     * 工序统计柱形图，按照班次统计某一周的统计图
     * @param year
     * @param week
     * @return
     */
    List<GxReportBarChartsClassesSupport> gxReportBarChartsByClasses(Integer year, Integer week) throws AdscmSystemException;
}
